🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / node / src / commonMain / kotlin / org / meshtastic / feature / node / metrics / NeighborInfoLog.kt
Displaying Raw • Download
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/metrics/NeighborInfoLog.kt 520fa717a938fd84682403b41f57d9f7e1ef49ef (520fa717) Text, 6.62 KB
T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.node.metrics
Tff7b72import T7ee787androidx.compose.foundation.ExperimentalFoundationApi
Tff7b72import T7ee787androidx.compose.foundation.combinedClickable
Tff7b72import T7ee787androidx.compose.foundation.layout.Box
Tff7b72import T7ee787androidx.compose.foundation.layout.PaddingValues
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxSize
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.items
Tff7b72import T7ee787androidx.compose.material3.DropdownMenu
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.Scaffold
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.lifecycle.compose.collectAsStateWithLifecycle
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.common.util.DateFormatter
Tff7b72import T7ee787org.meshtastic.core.model.getNeighborInfoResponse
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.neighbor_info
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_no_response
Tff7b72import T7ee787org.meshtastic.core.ui.component.MainAppBar
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Groups
Tff7b72import T7ee787org.meshtastic.core.ui.icon.MeshtasticIcons
Tff7b72import T7ee787org.meshtastic.core.ui.icon.PersonOff
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Refresh
Tff7b72import T7ee787org.meshtastic.core.ui.theme.StatusColors.StatusGreen
Tff7b72import T7ee787org.meshtastic.core.ui.theme.StatusColors.StatusOrange
Tff7b72import T7ee787org.meshtastic.core.ui.theme.StatusColors.StatusYellow
Tff7b72import T7ee787org.meshtastic.core.ui.util.annotateNeighborInfo
Tff7b72import T7ee787org.meshtastic.feature.node.component.CooldownIconButton
Tf0883e@OptInTb4b4b4(Te6edf3ExperimentalFoundationApiTff7b72::Te6edf3classTb4b4b4)
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffNeighborInfoLogScreenTb4b4b4(Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4, Te6edf3viewModelTb4b4b4: Te6edf3MetricsViewModelTb4b4b4, Te6edf3onNavigateUpTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3state Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3stateTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72fun Td2a8ffgetUsernameTb4b4b4(Te6edf3nodeNumTb4b4b4: Tffa657IntTb4b4b4)Tb4b4b4: Tffa657String Tff7b72= Te6edf3withTb4b4b4(Te6edf3viewModelTb4b4b4.Te6edf3getUserTb4b4b4(Te6edf3nodeNumTb4b4b4)Tb4b4b4) Tb4b4b4{ Ta5d6ff"Tffd700$Te6edf3long_nameTa5d6ff (Tffd700$Te6edf3short_nameTa5d6ff)Ta5d6ff" Tb4b4b4}
Tff7b72val Te6edf3statusGreen Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3StatusGreen
Tff7b72val Te6edf3statusYellow Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3StatusYellow
Tff7b72val Te6edf3statusOrange Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3StatusOrange
Te6edf3ScaffoldTb4b4b4(
Te6edf3topBar Tff7b72= Tb4b4b4{
Tff7b72val Te6edf3lastRequestNeighborsTime Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3lastRequestNeighborsTimeTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Te6edf3MainAppBarTb4b4b4(
Te6edf3title Tff7b72= Te6edf3stateTb4b4b4.Te6edf3nodeTff7b72?.Te6edf3userTff7b72?.Te6edf3long_name Tff7b72?: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3subtitle Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3neighbor_infoTb4b4b4)Tb4b4b4,
Te6edf3ourNode Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3showNodeChip Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3canNavigateUp Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onNavigateUp Tff7b72= Te6edf3onNavigateUpTb4b4b4,
Te6edf3actions Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3stateTb4b4b4.Te6edf3isLocalTb4b4b4) Tb4b4b4{
Te6edf3CooldownIconButtonTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3requestNeighborInfoTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3cooldownTimestamp Tff7b72= Te6edf3lastRequestNeighborsTimeTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3RefreshTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{ Te6edf3innerPadding Tff7b72-Tff7b72>
Te6edf3LazyColumnTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3innerPaddingTb4b4b4)Tb4b4b4,
Te6edf3contentPadding Tff7b72= Te6edf3PaddingValuesTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3neighborInfoRequestsTb4b4b4, Te6edf3key Tff7b72= Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uuid Tb4b4b4}Tb4b4b4) Tb4b4b4{ Te6edf3log Tff7b72-Tff7b72>
Tff7b72val Te6edf3result Tff7b72=
Te6edf3rememberTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3neighborInfoResultsTb4b4b4, Te6edf3logTb4b4b4.Te6edf3fromRadioTb4b4b4.Te6edf3packetTff7b72?.Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3stateTb4b4b4.Te6edf3neighborInfoResultsTb4b4b4.Te6edf3find Tb4b4b4{
Tffa657itTb4b4b4.Te6edf3fromRadioTb4b4b4.Te6edf3packetTff7b72?.Te6edf3decodedTff7b72?.Te6edf3request_id Tff7b72=Tff7b72= Te6edf3logTb4b4b4.Te6edf3fromRadioTb4b4b4.Te6edf3packetTff7b72?.Te6edf3id
Tb4b4b4}
Tb4b4b4}
Tff7b72val Te6edf3time Tff7b72= Te6edf3DateFormatterTb4b4b4.Te6edf3formatDateTimeTb4b4b4(Te6edf3logTb4b4b4.Te6edf3received_dateTb4b4b4)
Tff7b72val Te6edf3text Tff7b72= Tff7b72if Tb4b4b4(Te6edf3result Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Ta5d6ff"Ta5d6ffSuccessTa5d6ff" Tff7b72else Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_no_responseTb4b4b4)
Tff7b72val Te6edf3icon Tff7b72= Tff7b72if Tb4b4b4(Te6edf3result Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Te6edf3MeshtasticIconsTb4b4b4.Te6edf3Groups Tff7b72else Te6edf3MeshtasticIconsTb4b4b4.Te6edf3PersonOff
Tff7b72val Te6edf3header Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3neighbor_infoTb4b4b4)
Tff7b72var Te6edf3expanded Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Te6edf3Box Tb4b4b4{
Te6edf3MetricLogItemTb4b4b4(
Te6edf3icon Tff7b72= Te6edf3iconTb4b4b4,
Te6edf3text Tff7b72= Ta5d6ff"Tffd700$Te6edf3timeTa5d6ff - Tffd700$Te6edf3textTa5d6ff"Tb4b4b4,
Te6edf3contentDescription Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3neighbor_infoTb4b4b4)Tb4b4b4,
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3combinedClickableTb4b4b4(Te6edf3onLongClick Tff7b72= Tb4b4b4{ Te6edf3expanded Tff7b72= Tff7b72true Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3result
Tff7b72?.Te6edf3fromRadio
Tff7b72?.Te6edf3packet
Tff7b72?.Te6edf3getNeighborInfoResponseTb4b4b4(Tff7b72::Te6edf3getUsernameTb4b4b4, Te6edf3header Tff7b72= Te6edf3headerTb4b4b4)
Tff7b72?.Te6edf3let Tb4b4b4{
Tff7b72val Te6edf3message Tff7b72=
Te6edf3annotateNeighborInfoTb4b4b4(
Tffa657itTb4b4b4,
Te6edf3statusGreen Tff7b72= Te6edf3statusGreenTb4b4b4,
Te6edf3statusYellow Tff7b72= Te6edf3statusYellowTb4b4b4,
Te6edf3statusOrange Tff7b72= Te6edf3statusOrangeTb4b4b4,
Tb4b4b4)
Te6edf3viewModelTb4b4b4.Te6edf3showLogDetailTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3neighbor_infoTb4b4b4, Te6edf3messageTb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Te6edf3DropdownMenuTb4b4b4(Te6edf3expanded Tff7b72= Te6edf3expandedTb4b4b4, Te6edf3onDismissRequest Tff7b72= Tb4b4b4{ Te6edf3expanded Tff7b72= Tff7b72false Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3DeleteItem Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3deleteLogTb4b4b4(Te6edf3logTb4b4b4.Te6edf3uuidTb4b4b4)
Te6edf3expanded Tff7b72= Tff7b72false
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.06s